package algorithm;

/**
 * 冒泡排序，按从小到大排序
 * 冒泡排序：比较相邻位置的两个数字，如果 左>右 则左右交换，直到末尾。
 * 每遍历一次，就可以找出待排序部分的最大值
 * 重复这个步骤，知道没有数字需要比较
 * 时间复杂度：O(N2)
 * 空间复杂度：O(1)
 */
public class BubbleSortAlgorithm implements ISort {

    @Override
    public void sort(int[] nums) {
        for (int i = 0; i < nums.length - 1; i++) {     //外层循环决定排序次数
            for (int j = 0; j < nums.length - 1 - i; j++) { //内层循环决定排序
                if (nums[j] > nums[j + 1]) {    //交换位置
                    int temp = nums[j + 1];
                    nums[j + 1] = nums[j];
                    nums[j] = temp;
                }
            }
        }
    }
}
